home *** CD-ROM | disk | FTP | other *** search
/ AMIGA-CD 2 / Amiga-CD - Volume 2.iso / gepackte_disketten / 1994 / 08_94_5.dms / 08_94_5.adf / term-4.0-Source.lha / ModemPanel.c < prev    next >
C/C++ Source or Header  |  1994-06-26  |  10KB  |  457 lines

  1. /*
  2. **    ModemPanel.c
  3. **
  4. **    Editing panel for modem configuration
  5. **
  6. **    Copyright © 1990-1994 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. */
  9.  
  10. #include "termGlobal.h"
  11.  
  12. enum    {    GAD_LIMIT_MACRO=1000,
  13.         GAD_USE,GAD_CANCEL,GAD_DEFAULT };
  14.  
  15. STATIC UBYTE * __saveds
  16. ShowDialRetries(struct Gadget *SomeGadget,WORD Level)
  17. {
  18.     if(Level < 0)
  19.         return(LocaleString(MSG_DIAL_RETRIES_UNLIMITED_TXT));
  20.     else
  21.     {
  22.         STATIC UBYTE __far Buffer[10];
  23.  
  24.         SPrintf(Buffer,"%ld",Level);
  25.  
  26.         return(Buffer);
  27.     }
  28. }
  29.  
  30. STATIC UBYTE * __saveds
  31. ShowMinutes(struct Gadget *SomeGadget,WORD Level)
  32. {
  33.     STATIC UBYTE __far Buffer[15];
  34.  
  35.     SPrintf(Buffer,LocaleString(MSG_GLOBAL_SHOW_MINUTES_TXT),Level / 6,(Level % 6) * 10);
  36.  
  37.     return(Buffer);
  38. }
  39.  
  40. STATIC UBYTE * __saveds
  41. ShowHours(struct Gadget *SomeGadget,WORD Level)
  42. {
  43.     STATIC UBYTE __far Buffer[15];
  44.  
  45.     SPrintf(Buffer,LocaleString(MSG_GLOBAL_SHOW_HOURS_TXT),Level / 60,Level % 60);
  46.  
  47.     return(Buffer);
  48. }
  49.  
  50. STATIC UBYTE * __saveds
  51. ShowSeconds(struct Gadget *SomeGadget,WORD Level)
  52. {
  53.     STATIC UBYTE __far Buffer[15];
  54.  
  55.     SPrintf(Buffer,LocaleString(MSG_GLOBAL_SHOW_MINUTES_TXT),Level / 60,Level % 60);
  56.  
  57.     return(Buffer);
  58. }
  59.  
  60. BYTE __regargs
  61. ModemPanel(struct Configuration *Config,BYTE *Default)
  62. {
  63.     struct LayoutHandle    *Handle;
  64.     BYTE             Cancel = FALSE;
  65.  
  66.     SaveConfig(Config,PrivateConfig);
  67.  
  68.     if(Handle = LT_CreateHandleTags(Window -> WScreen,
  69.         LH_LocaleHook,    &LocaleHook,
  70.     TAG_DONE))
  71.     {
  72.         struct Window *Window;
  73.  
  74.         LT_New(Handle,
  75.             LA_Type,    VERTICAL_KIND,
  76.         TAG_DONE);
  77.         {
  78.             LT_New(Handle,
  79.                 LA_Type,    HORIZONTAL_KIND,
  80.             TAG_DONE);
  81.             {
  82.                 LT_New(Handle,
  83.                     LA_Type,    VERTICAL_KIND,
  84.                 TAG_DONE);
  85.                 {
  86.                     LT_New(Handle,
  87.                         LA_Type,    VERTICAL_KIND,
  88.                         LA_LabelID,    MSG_V36_0110,
  89.                     TAG_DONE);
  90.                     {
  91.                         LT_New(Handle,
  92.                             LA_Type,    STRING_KIND,
  93.                             LA_LabelID,    MSG_MODEMPANEL_MODEM_INIT_STRING_GAD,
  94.                             LA_STRPTR,    Config -> ModemConfig -> ModemInit,
  95.                             LA_Chars,    10,
  96.                             GTST_MaxChars,    79,
  97.                         TAG_DONE);
  98.     
  99.                         LT_New(Handle,
  100.                             LA_Type,    STRING_KIND,
  101.                             LA_LabelID,    MSG_MODEMPANEL_MODEM_EXIT_STRING_GAD,
  102.                             LA_STRPTR,    Config -> ModemConfig -> ModemExit,
  103.                             GTST_MaxChars,    79,
  104.                         TAG_DONE);
  105.     
  106.                         LT_New(Handle,
  107.                             LA_Type,    STRING_KIND,
  108.                             LA_LabelID,    MSG_MODEMPANEL_MODEM_HANGUP_STRING_GAD,
  109.                             LA_STRPTR,    Config -> ModemConfig -> ModemHangup,
  110.                             GTST_MaxChars,    79,
  111.                         TAG_DONE);
  112.     
  113.                         LT_EndGroup(Handle);
  114.                     }
  115.     
  116.                     LT_New(Handle,
  117.                         LA_Type,    VERTICAL_KIND,
  118.                         LA_LabelID,    MSG_V36_0111,
  119.                     TAG_DONE);
  120.                     {
  121.                         LT_New(Handle,
  122.                             LA_Type,    STRING_KIND,
  123.                             LA_LabelID,    MSG_MODEMPANEL_NO_CARRIER_STRING_GAD,
  124.                             LA_STRPTR,    Config -> ModemConfig -> NoCarrier,
  125.                             LA_Chars,    10,
  126.                             GTST_MaxChars,    15,
  127.                         TAG_DONE);
  128.     
  129.                         LT_New(Handle,
  130.                             LA_Type,    STRING_KIND,
  131.                             LA_LabelID,    MSG_MODEMPANEL_NO_DIALTONE_STRING_GAD,
  132.                             LA_STRPTR,    Config -> ModemConfig -> NoDialTone,
  133.                             GTST_MaxChars,    15,
  134.                         TAG_DONE);
  135.     
  136.                         LT_New(Handle,
  137.                             LA_Type,    STRING_KIND,
  138.                             LA_LabelID,    MSG_MODEMPANEL_CONNECT_STRING_GAD,
  139.                             LA_STRPTR,    Config -> ModemConfig -> Connect,
  140.                             GTST_MaxChars,    15,
  141.                         TAG_DONE);
  142.     
  143.                         LT_New(Handle,
  144.                             LA_Type,    STRING_KIND,
  145.                             LA_LabelID,    MSG_MODEMPANEL_VOICE_STRING_GAD,
  146.                             LA_STRPTR,    Config -> ModemConfig -> Voice,
  147.                             GTST_MaxChars,    15,
  148.                         TAG_DONE);
  149.     
  150.                         LT_New(Handle,
  151.                             LA_Type,    STRING_KIND,
  152.                             LA_LabelID,    MSG_MODEMPANEL_RING_STRING_GAD,
  153.                             LA_STRPTR,    Config -> ModemConfig -> Ring,
  154.                             GTST_MaxChars,    15,
  155.                         TAG_DONE);
  156.     
  157.                         LT_New(Handle,
  158.                             LA_Type,    STRING_KIND,
  159.                             LA_LabelID,    MSG_MODEMPANEL_BUSY_STRING_GAD,
  160.                             LA_STRPTR,    Config -> ModemConfig -> Busy,
  161.                             GTST_MaxChars,    15,
  162.                         TAG_DONE);
  163.     
  164.                         LT_New(Handle,
  165.                             LA_Type,    STRING_KIND,
  166.                             LA_LabelID,    MSG_MODEMPANEL_OK_STRING_GAD,
  167.                             LA_STRPTR,    Config -> ModemConfig -> Ok,
  168.                             GTST_MaxChars,    15,
  169.                         TAG_DONE);
  170.     
  171.                         LT_New(Handle,
  172.                             LA_Type,    STRING_KIND,
  173.                             LA_LabelID,    MSG_MODEMPANEL_ERROR_STRING_GAD,
  174.                             LA_STRPTR,    Config -> ModemConfig -> Error,
  175.                             GTST_MaxChars,    15,
  176.                         TAG_DONE);
  177.     
  178.                         LT_EndGroup(Handle);
  179.                     }
  180.     
  181.                     LT_EndGroup(Handle);
  182.                 }
  183.  
  184.                 LT_New(Handle,
  185.                     LA_Type,    VERTICAL_KIND,
  186.                 TAG_DONE);
  187.                 {
  188.                     LT_New(Handle,
  189.                         LA_Type,    VERTICAL_KIND,
  190.                         LA_LabelID,    MSG_V36_0112,
  191.                     TAG_DONE);
  192.                     {
  193.                         LT_New(Handle,
  194.                             LA_Type,    STRING_KIND,
  195.                             LA_LabelID,    MSG_MODEMPANEL_DIAL_PREFIX_GAD,
  196.                             LA_STRPTR,    Config -> ModemConfig -> DialPrefix,
  197.                             LA_Chars,    10,
  198.                             GTST_MaxChars,    79,
  199.                         TAG_DONE);
  200.  
  201.                         LT_New(Handle,
  202.                             LA_Type,    STRING_KIND,
  203.                             LA_LabelID,    MSG_MODEMPANEL_DIAL_SUFFIX_GAD,
  204.                             LA_STRPTR,    Config -> ModemConfig -> DialSuffix,
  205.                             GTST_MaxChars,    79,
  206.                         TAG_DONE);
  207.  
  208.                         LT_New(Handle,
  209.                             LA_Type,        SLIDER_KIND,
  210.                             LA_LabelID,        MSG_MODEMPANEL_REDIAL_DELAY_GAD,
  211.                             LA_LONG,        &Config -> ModemConfig -> RedialDelay,
  212.                             GTSL_Min,        0,
  213.                             GTSL_Max,        360,
  214.                             GTSL_DispFunc,        ShowMinutes,
  215.                             GTSL_LevelFormat,    "%s",
  216.                         TAG_DONE);
  217.  
  218.                         LT_New(Handle,
  219.                             LA_Type,        SLIDER_KIND,
  220.                             LA_LabelID,        MSG_MODEMPANEL_DIAL_RETRIES_GAD,
  221.                             LA_LONG,        &Config -> ModemConfig -> DialRetries,
  222.                             GTSL_DispFunc,        ShowDialRetries,
  223.                             GTSL_Min,        -1,
  224.                             GTSL_Max,        1000,
  225.                             GTSL_LevelFormat,    "%s",
  226.                         TAG_DONE);
  227.  
  228.                         LT_New(Handle,
  229.                             LA_Type,        SLIDER_KIND,
  230.                             LA_LabelID,        MSG_MODEMPANEL_DIAL_TIMEOUT_GAD,
  231.                             LA_LONG,        &Config -> ModemConfig -> DialTimeout,
  232.                             GTSL_Min,        0,
  233.                             GTSL_Max,        1800,
  234.                             GTSL_DispFunc,        ShowSeconds,
  235.                             GTSL_LevelFormat,    "%s",
  236.                         TAG_DONE);
  237.  
  238.                         LT_New(Handle,
  239.                             LA_Type,        CHECKBOX_KIND,
  240.                             LA_LabelID,        MSG_MODEMPANEL_REDIAL_AFTER_HANGUP_GAD,
  241.                             LA_BYTE,        &Config -> ModemConfig -> RedialAfterHangup,
  242.                         TAG_DONE);
  243.  
  244.                         LT_EndGroup(Handle);
  245.                     }
  246.  
  247.                     LT_New(Handle,
  248.                         LA_Type,    VERTICAL_KIND,
  249.                         LA_LabelID,    MSG_V36_0116,
  250.                     TAG_DONE);
  251.                     {
  252.                         LT_New(Handle,
  253.                             LA_Type,        CHECKBOX_KIND,
  254.                             LA_LabelID,        MSG_MODEMPANEL_CONNECT_AUTO_BAUD_GAD,
  255.                             LA_BYTE,        &Config -> ModemConfig -> ConnectAutoBaud,
  256.                         TAG_DONE);
  257.  
  258.                         LT_New(Handle,
  259.                             LA_Type,        CHECKBOX_KIND,
  260.                             LA_LabelID,        MSG_MODEMPANEL_DROP_DTR_ON_HANGUP_GAD,
  261.                             LA_BYTE,        &Config -> ModemConfig -> DropDTR,
  262.                         TAG_DONE);
  263.  
  264.                         LT_New(Handle,
  265.                             LA_Type,        CHECKBOX_KIND,
  266.                             LA_LabelID,        MSG_MODEMPANEL_NOCARRIER_IS_BUSY_GAD,
  267.                             LA_BYTE,        &Config -> ModemConfig -> NoCarrierIsBusy,
  268.                         TAG_DONE);
  269.  
  270.                         LT_New(Handle,
  271.                             LA_Type,        CHECKBOX_KIND,
  272.                             LA_LabelID,        MSG_MODEMPANEL_ABORT_HANGS_UP_TXT,
  273.                             LA_BYTE,        &Config -> ModemConfig -> AbortHangsUp,
  274.                         TAG_DONE);
  275.  
  276.                         LT_New(Handle,
  277.                             LA_Type,        SLIDER_KIND,
  278.                             LA_LabelID,        MSG_MODEMPANEL_TIME_TO_CONNECT_GAD,
  279.                             LA_LONG,        &Config -> ModemConfig -> TimeToConnect,
  280.                             LA_Chars,        6,
  281.                             GTSL_Min,        0,
  282.                             GTSL_Max,        360,
  283.                             GTSL_DispFunc,        ShowMinutes,
  284.                             GTSL_LevelFormat,    "%s",
  285.                         TAG_DONE);
  286.  
  287.                         LT_EndGroup(Handle);
  288.                     }
  289.  
  290.                     LT_New(Handle,
  291.                         LA_Type,    VERTICAL_KIND,
  292.                         LA_LabelID,    MSG_V36_0118,
  293.                     TAG_DONE);
  294.                     {
  295.                         LT_New(Handle,
  296.                             LA_Type,        SLIDER_KIND,
  297.                             LA_LabelID,        MSG_MODEMPANEL_CONNECTION_LIMIT_GAD,
  298.                             LA_WORD,        &Config -> ModemConfig -> ConnectLimit,
  299.                             GTSL_Min,        0,
  300.                             GTSL_Max,        1440,
  301.                             GTSL_DispFunc,        ShowHours,
  302.                             GTSL_LevelFormat,    "%s",
  303.                         TAG_DONE);
  304.  
  305.                         LT_New(Handle,
  306.                             LA_Type,        STRING_KIND,
  307.                             LA_LabelID,        MSG_MODEMPANEL_LIMIT_MACRO_GAD,
  308.                             LA_STRPTR,        Config -> ModemConfig -> ConnectLimitMacro,
  309.                             LA_Chars,        10,
  310.                             LA_ID,            GAD_LIMIT_MACRO,
  311.                             GTST_MaxChars,        MAX_FILENAME_LENGTH - 1,
  312.                         TAG_DONE);
  313.  
  314.                         LT_EndGroup(Handle);
  315.                     }
  316.  
  317.                     LT_EndGroup(Handle);
  318.                 }
  319.  
  320.                 LT_EndGroup(Handle);
  321.             }
  322.  
  323.             LT_New(Handle,
  324.                 LA_Type,    VERTICAL_KIND,
  325.             TAG_DONE);
  326.             {
  327.                 LT_New(Handle,LA_Type,XBAR_KIND,LAXB_FullSize,TRUE,TAG_DONE);
  328.  
  329.                 LT_EndGroup(Handle);
  330.             }
  331.  
  332.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  333.                 LAGR_SameSize,    TRUE,
  334.                 LAGR_Spread,    TRUE,
  335.             TAG_DONE);
  336.             {
  337.                 LT_New(Handle,
  338.                     LA_Type,    BUTTON_KIND,
  339.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  340.                     LA_ID,        GAD_USE,
  341.                     LABT_ReturnKey,    TRUE,
  342.                     LABT_ExtraFat,    TRUE,
  343.                 TAG_DONE);
  344.  
  345.                 if(Default)
  346.                 {
  347.                     LT_New(Handle,
  348.                         LA_Type,    BUTTON_KIND,
  349.                         LA_LabelID,    MSG_GLOBAL_DEFAULT_GAD,
  350.                         LA_ID,        GAD_DEFAULT,
  351.                         LABT_ExtraFat,    TRUE,
  352.                     TAG_DONE);
  353.                 }
  354.  
  355.                 LT_New(Handle,
  356.                     LA_Type,    BUTTON_KIND,
  357.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  358.                     LA_ID,        GAD_CANCEL,
  359.                     LABT_EscKey,    TRUE,
  360.                     LABT_ExtraFat,    TRUE,
  361.                 TAG_DONE);
  362.  
  363.                 LT_EndGroup(Handle);
  364.             }
  365.  
  366.             LT_EndGroup(Handle);
  367.         }
  368.  
  369.         if(Window = LT_Layout(Handle,LocaleString(MSG_MODEMPANEL_MODEM_PREFERENCES_TXT),NULL,0,0,IDCMP_CLOSEWINDOW,0,
  370.             LAWN_HelpHook,        &GuideHook,
  371.             WA_DepthGadget,        TRUE,
  372.             WA_CloseGadget,        TRUE,
  373.             WA_DragBar,        TRUE,
  374.             WA_RMBTrap,        TRUE,
  375.             WA_Activate,        TRUE,
  376.         TAG_DONE))
  377.         {
  378.             struct IntuiMessage    *Message;
  379.             BOOLEAN             Done = FALSE;
  380.             ULONG             MsgClass,
  381.                          MsgQualifier;
  382.             UWORD             MsgCode;
  383.             struct Gadget        *MsgGadget;
  384.  
  385.             GuideContext(CONTEXT_MODEM);
  386.  
  387.             PushWindow(Window);
  388.  
  389.             LT_ShowWindow(Handle,TRUE);
  390.  
  391.             do
  392.             {
  393.                 if(Wait(PORTMASK(Window -> UserPort) | SIG_BREAK) & SIG_BREAK)
  394.                 {
  395.                     SaveConfig(PrivateConfig,Config);
  396.  
  397.                     break;
  398.                 }
  399.  
  400.                 while(Message = (struct IntuiMessage *)GT_GetIMsg(Window -> UserPort))
  401.                 {
  402.                     MsgClass    = Message -> Class;
  403.                     MsgQualifier    = Message -> Qualifier;
  404.                     MsgCode        = Message -> Code;
  405.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  406.  
  407.                     GT_ReplyIMsg(Message);
  408.  
  409.                     LT_HandleInput(Handle,MsgQualifier,&MsgClass,&MsgCode,&MsgGadget);
  410.  
  411.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  412.                     {
  413.                         SaveConfig(PrivateConfig,Config);
  414.  
  415.                         Done = TRUE;
  416.                     }
  417.  
  418.                     if(MsgClass == IDCMP_GADGETUP)
  419.                     {
  420.                         switch(MsgGadget -> GadgetID)
  421.                         {
  422.                             case GAD_USE:
  423.  
  424.                                 Done = TRUE;
  425.                                 break;
  426.  
  427.                             case GAD_CANCEL:
  428.  
  429.                                 SaveConfig(PrivateConfig,Config);
  430.  
  431.                                 Cancel = Done = TRUE;
  432.                                 break;
  433.  
  434.                             case GAD_DEFAULT:
  435.  
  436.                                 *Default = TRUE;
  437.  
  438.                                 Done = TRUE;
  439.                                 break;
  440.                         }
  441.                     }
  442.                 }
  443.             }
  444.             while(!Done);
  445.  
  446.             PopWindow();
  447.         }
  448.  
  449.         LT_DeleteHandle(Handle);
  450.     }
  451.  
  452.     if(Default)
  453.         return((BYTE)(!Cancel));
  454.     else
  455.         return((BYTE)memcmp(PrivateConfig -> ModemConfig,Config -> ModemConfig,sizeof(struct ModemSettings)));
  456. }
  457.